const express = require("express");
const app = express();
const port = 3000;
const mysql = require("mysql2/promise");
const dbConfig = require("./db/config");

// 创建数据库连接池
const pool = mysql.createPool(dbConfig);

// 测试数据库连接
async function initDB() {
  try {
    const conn = await pool.getConnection();
    console.log("MySQL连接成功");
    conn.release();
  } catch (err) {
    console.error("MySQL连接失败:", err);
    process.exit(1);
  }
}
// 常用中间件
app.use(express.json()); // 解析JSON请求体
app.use(express.urlencoded({ extended: true })); // 解析表单数据
app.use(require("cors")()); // 跨域支持
app.use(require("helmet")()); // 安全头部
app.use(require("morgan")("dev")); // 请求日志

// 静态文件服务
app.use("/public", express.static("public"));

// 自定义中间件示例
app.use((req, res, next) => {
  console.log(`[${new Date().toISOString()}] ${req.method} ${req.path}`);
  next();
});

// 错误处理中间件
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send("Something broke!");
});

// ... existing API routes ...

// 404处理
app.use((req, res) => {
  res.status(404).json({ error: "Not Found" });
});

// 在服务器启动前初始化数据库
initDB().then(() => {
  app.listen(port, () => {
    console.log(`服务器运行在 http://localhost:${port}`);
  });
});
